home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Workbench Add-On
/
Workbench Add-On - Volume 1.iso
/
Dev
/
Oberon
/
source
/
amiga
/
NonVolatile.mod
< prev
next >
Wrap
Text File
|
1995-06-29
|
4KB
|
168 lines
(*************************************************************************
$RCSfile: NonVolatile.mod $
Description: Interface to nonvolatile.library
Created by: fjc (Frank Copeland)
$Revision: 3.7 $
$Author: fjc $
$Date: 1995/06/04 23:13:14 $
Includes Release 40.15
(C) Copyright 1990-1993 Commodore-Amiga, Inc.
All Rights Reserved
Oberon-A Interface Copyright © 1994-1995, Frank Copeland.
This file is part of the Oberon-A Interface.
See Oberon-A.doc for conditions of use and distribution.
*************************************************************************)
<* STANDARD- *>
MODULE [2] NonVolatile;
IMPORT SYS := SYSTEM, Kernel, e := Exec, s := Sets;
(*
** $VER: nonvolatile.h 40.8 (30.7.93)
**
** nonvolatile.library interface structures and defintions.
*)
(*****************************************************************************)
TYPE
NVInfoPtr * = POINTER TO NVInfo;
NVInfo * = RECORD
maxStorage * : e.ULONG;
freeStorage * : e.ULONG;
END;
(*****************************************************************************)
TYPE
EntryPtr * = POINTER TO Entry;
Entry * = RECORD (e.MinNodeBase)
minNode * : e.MinNode;
name * : e.LSTRPTR;
size * : e.ULONG;
protection * : e.ULONG;
END;
CONST
(* bit definitions for mask in SetNVProtection(). Also used for
* NVEntry.nve_Protection.
*)
delete * = 0;
appName * = 31;
(*****************************************************************************)
CONST
(* errors from StoreNV() *)
errBadName * = 1;
errWriteProt * = 2;
errFail * = 3;
errFatal * = 4;
TYPE
DataPtr * = POINTER TO Data;
Data * = RECORD END;
(*-- Library Base variable --------------------------------------------*)
CONST
nonvolatileName * = "nonvolatile.library";
VAR
base* : e.LibraryPtr;
(*-- Library Functions ------------------------------------------------*)
(*
** $VER: nonvolatile_protos.h 40.5 (30.7.93)
*)
(*--- functions in V40 or higher (Release 3.1) ---*)
PROCEDURE GetCopyNV* [base,-30]
( appName [8] : ARRAY OF CHAR;
itemName [9] : ARRAY OF CHAR;
killRequesters [1] : e.LONGBOOL )
: DataPtr;
PROCEDURE FreeNVData* [base,-36]
( data [8] : DataPtr );
PROCEDURE StoreNV* [base,-42]
( appName [8] : ARRAY OF CHAR;
itemName [9] : ARRAY OF CHAR;
data [10] : DataPtr;
length [0] : e.ULONG;
killRequesters [1] : e.LONGBOOL )
: e.UWORD;
PROCEDURE DeleteNV* [base,-48]
( appName [8] : ARRAY OF CHAR;
itemName [9] : ARRAY OF CHAR;
killRequesters [1] : e.LONGBOOL )
: BOOLEAN;
PROCEDURE GetNVInfo* [base,-54]
( killRequesters [1] : e.LONGBOOL )
: NVInfoPtr;
PROCEDURE GetNVList* [base,-60]
( appName [8] : ARRAY OF CHAR;
killRequesters [1] : e.LONGBOOL )
: e.MinListPtr;
PROCEDURE SetNVProtection* [base,-66]
( appName [8] : ARRAY OF CHAR;
itemName [9] : ARRAY OF CHAR;
mask [2] : s.SET32;
killRequesters [1] : e.LONGBOOL )
: BOOLEAN;
(* determine the size of data returned by this library *)
(* #define SizeNVData(DataPtr) ((((ULONG * ) DataPtr)[-1]) - 4) *)
(*------------------------------------*)
PROCEDURE [0] SizeNVData (data : DataPtr) : e.ULONG;
VAR size : LONGINT;
BEGIN (* SizeNVData *)
SYS.GET (SYS.VAL (LONGINT, data) - 4, size);
RETURN size - 4
END SizeNVData;
(*-- Library Base variable --------------------------------------------*)
<*$LongVars-*>
(*-----------------------------------*)
PROCEDURE* [0] CloseLib (VAR rc : LONGINT);
BEGIN (* CloseLib *)
IF base # NIL THEN e.CloseLibrary (base) END
END CloseLib;
BEGIN
base := e.OpenLibrary (nonvolatileName, e.libraryMinimum);
IF base # NIL THEN Kernel.SetCleanup (CloseLib) END
END NonVolatile.